/**
 * @file film.c
 * @brief Fichier source du module film.
 *
 * @author Rachid Delory, Mamadou Keita, Florian Bernard
 */

/* *********************************************************************

                       Librairies de film                          

********************************************************************* */

#include "film.h"

/* *********************************************************************

                        Fonctions                                      

********************************************************************* */

void init_Fil(Film *ptr)
{
  if(ptr)
    {
      ptr->id = 0;
      ptr->metrage = AUCUN_FIL;
      ptr->dateBlueRay = NULL;
      ptr->dateDvd = NULL;
      ptr->dateProduction = NULL;
      ptr->synopsis = NULL;
      ptr->duree = NULL;
      ptr->maj = 0;
      ptr->sup = 0;
    }
}

void liberer_Fil(Film *ptr)
{
  if(ptr)
    {
      ptr->id = 0;
      ptr->metrage = AUCUN_FIL;
      detruire_Dat(&(ptr->dateBlueRay));
      detruire_Dat(&(ptr->dateDvd));
      detruire_Dat(&(ptr->dateProduction));
      detruire_Tem(&(ptr->duree));
      if(ptr->synopsis)
	{
	  free(ptr->synopsis);
	  ptr->synopsis = NULL;
	}
    }
}

Film * creer_Fil()
{
  Film *film = (Film *) malloc (1 * sizeof(Film));
  if(film == NULL)
    {
      fprintf(stderr, "Mémoire insuffisante");
      exit(EXIT_FAILURE);
    }
  init_Fil(film);
  return film;
}

void detruire_Fil(Film **film)
{
  if(film && (*film))
    {
      liberer_Fil((*film));
      free((*film));
      (*film) = NULL;
    }
}

void copier_Fil(Film **film, const Film *src)
{
  if((*film) == NULL)
    {
      (*film) = creer_Fil();
    }
  if(src)
    {
      (*film)->id = src->id;
      (*film)->metrage = src->metrage;
      copier_Dat(&((*film)->dateBlueRay), src->dateBlueRay);
      copier_Dat(&((*film)->dateDvd), src->dateDvd);
      copier_Tem(&((*film)->duree), src->duree);
      copier_Dat(&((*film)->dateProduction), src->dateProduction);
      copier_Uti(&((*film)->synopsis), src->synopsis);
    }
  else
    detruire_Fil(film);
}

int getId_Fil(const Film * ptr)
{
  if(ptr)
    return ptr->id;
  return 0;
}

void setId_Fil(Film *ptr, const int val)
{
  if(ptr)
    ptr->id = val;
}

int getMetrage_Fil(const Film * ptr)
{
  if(ptr)
    return ptr->metrage;
  return AUCUN_FIL;
}

void setMetrage_Fil(Film *ptr, const int val)
{
  if(ptr)
    ptr->metrage = val;
}

Date * getDateBlueRay_Fil(const Film * ptr)
{
  if(ptr)
    return ptr->dateBlueRay;
  return NULL;
}

void setDateBlueRay_Fil(Film *ptr, const Date *val)
{
  if(ptr)
    copier_Dat(&(ptr->dateBlueRay), val);
}

Date * getDateDvd_Fil(const Film  *ptr)
{
  if(ptr)
    return ptr->dateDvd;
  return NULL;
}

void setDateDvd_Fil(Film *ptr, const Date *val)
{
  if(ptr)
    copier_Dat(&(ptr->dateDvd), val);
}

Temps *getDuree_Fil(const Film * ptr)
{
  if(ptr)
    return ptr->duree;
  return NULL;
}

void setDuree_Fil(Film *ptr, const Temps * val)
{
  if(ptr)
    {
    copier_Tem(&(ptr->duree), val);
    }
}

Date *getDateProduction_Fil(const Film * ptr)
{
  if(ptr)
    return ptr->dateProduction;
  return NULL;
}

void setDateProduction_Fil(Film *ptr, const Date * val)
{
  if(ptr)
    copier_Dat(&(ptr->dateProduction), val);
}

char * getSynopsis_Fil(const Film * ptr)
{
  if(ptr)
    return ptr->synopsis;
  return NULL;
}

void setSynopsis_Fil(Film *ptr, const char * val)
{
  if(ptr)
    copier_Uti(&(ptr->synopsis), val);
}

void setMaj_Fil(Film *ptr, const char b)
{
  if(ptr)
    {
      ptr->maj = b;
      if(b == 1)
	ptr->sup = !b;
    }
}

char getMaj_Fil(const Film *ptr)
{
  if(ptr)
    return ptr->maj;
  return 0;
}

void setSup_Fil(Film *ptr, const char b)
{
  if(ptr)
    {
      ptr->sup = b;
      if(b == 1)
	ptr->maj = !b;
    }
}

char getSup_Fil(const Film *ptr)
{
  if(ptr)
    return ptr->sup;
  return 0;
}
